﻿/*
Copyright © 2010 François Karman

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

See <license.txt> for the complete license of the software.
*/

using System.Diagnostics.CodeAnalysis;
using System.Xml;

namespace MSBuild.Mercurial.CodePlex
{
    /// <summary>
    /// Represents the documentation of a property.
    /// </summary>
    public class PropertyDocumentation
    {
        /// <summary>
        /// Gets or sets the name of the property.
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Gets or sets the type of the property.
        /// </summary>
        public string Type { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether the property is required
        /// when used in a MSBuild project.
        /// </summary>
        public bool Required { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether the property is an output
        /// of the associated task.
        /// </summary>
        public bool Output { get; set; }

        /// <summary>
        /// Gets or sets the Mercurial command parameter associated
        /// with the property.
        /// </summary>
        public string Parameter { get; set; }

        /// <summary>
        /// Gets or sets the xml comment associated with the property.
        /// </summary>
        [SuppressMessage(
            "Microsoft.Design",
            "CA1059:MembersShouldNotExposeCertainConcreteTypes",
            Justification = "The interface IXPathNavigeable doesn't provide enought functionalities and can't be serialized")]
        public XmlNode Comment { get; set; }
    }
}
